package com.distributor.common;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;

/**
 * 处理与其他平台交互过程中的，报文的加解密 作者： sensen 创建时间:2017年3月23日
 */
public class DealCiphertext {

    private static String key = "12345!@#$%^&*%^&*ABCDEFG";

    /**
     * 加密
     *
     * @param text 需要加密的报文
     * @return
     * @throws Exception
     */
    public static String encryption(String text) {
        try {
            return DESUtil.encrypt(text, key);
        } catch (UnsupportedEncodingException e) {
            return "0";
        } catch (Exception e) {
            e.printStackTrace();
            return "0";
        }
    }

    /**
     * 解密
     *
     * @param text 需要解密的报文
     * @return
     */
    public static String decrypt(String text) {

        try {
            return DESUtil.decrypt(text, key);
        } catch (IOException e) {
            e.printStackTrace();
            return "0";
        } catch (Exception e) {
            e.printStackTrace();
            return "0";
        }
    }


    /**
     * 比较2个值大小
     *
     * @return
     */
    public static Boolean compare(String text1, BigDecimal amount) {
        BigDecimal amount1 = BigDecimal.valueOf(Double.parseDouble(DealCiphertext.decrypt(text1)));
        return amount1.compareTo(amount) > 0 ? true : false;
    }

    /**
     * 两个参数计算
     *
     * @param text1
     * @param amount
     * @param addOrDel
     * @return
     */
    public static String calculation(String text1, BigDecimal amount, String addOrDel) {
        String bb = "";
        if (addOrDel.equals("add")) {
            // 增加可提现金额
            bb = DealCiphertext.encryption(
                    (BigDecimal.valueOf(Double.parseDouble(DealCiphertext.decrypt(text1))).add(amount)).toString());
        } else if (addOrDel.equals("del")) {
            // 减少可提现金额
            bb = DealCiphertext.encryption(
                    (BigDecimal.valueOf(Double.parseDouble(DealCiphertext.decrypt(text1))).subtract(amount)).toString());
        }
        return bb;
    }


    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(DealCiphertext.encryption("10000"));
        System.out.println(DealCiphertext.decrypt("cyvuSxdtop0="));
    }

}
